name: Full build and test
on:
  schedule:
    - cron: '0 1 * * *' # run at 1 AM UTC
  # Allow manual runs
  workflow_dispatch:
env:
  IPV6: 0
jobs:
  linux:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        cc: [gcc, clang, g++, clang++]
        target: [test, mip_test]
        ssl: ["", BUILTIN, MBEDTLS, OPENSSL, WOLFSSL]
        select: ["-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0", "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0", "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=1"]
        exclude:
        - ssl: MBEDTLS
          select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0"
        - ssl: MBEDTLS
          select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0"
        - ssl: OPENSSL
          select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0"
        - ssl: OPENSSL
          select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0"
        - ssl: WOLFSSL
          select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0"
        - ssl: WOLFSSL
          select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0"
    name: linux ${{ matrix.target }} CC=${{ matrix.cc }} SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }}
    env:
      CC: ${{ matrix.cc }}
      SSL: ${{ matrix.ssl }}
      TFLAGS: ${{ matrix.select }}
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: ./test/setup_ga_network.sh && sudo apt -y update ; sudo apt -y install libmbedtls-dev libwolfssl-dev && make -C test ${{ matrix.target }}
  s390:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN]
    name: S390 SSL=${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: sudo apt -y update ; sudo apt -y install qemu binfmt-support qemu-user-static && docker run --rm --privileged multiarch/qemu-user-static --reset -p yes && make -C test s390 SSL=${{ matrix.ssl }}
  armhf:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN]
    name: ArmHF SSL=${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: sudo apt -y update ; sudo apt -y install qemu binfmt-support qemu-user-static && docker run --rm --privileged multiarch/qemu-user-static --reset -p yes && make -C test armhf SSL=${{ matrix.ssl }}
  unamalgamated-mg_prefix:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN, MBEDTLS, OPENSSL, WOLFSSL]
    name: unamalgamated-mg_prefix SSL=${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: sudo apt -y update ; sudo apt -y install libmbedtls-dev libwolfssl-dev
    - run: make -C test unamalgamated && make -C test mg_prefix
  valgrind:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN, MBEDTLS, OPENSSL, WOLFSSL]
    name: Valgrind SSL=${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: sudo apt -y update ; sudo apt -y install libmbedtls-dev libwolfssl-dev valgrind
    - run: make -C test valgrind SSL=${{ matrix.ssl }}
  macos:
    runs-on: macos-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN, MBEDTLS, OPENSSL, WOLFSSL]
        select: [-DMG_ENABLE_POLL=0, -DMG_ENABLE_POLL=1]
        exclude:
        - ssl: MBEDTLS
          select: -DMG_ENABLE_POLL=0
        - ssl: OPENSSL
          select: -DMG_ENABLE_POLL=0
        - ssl: WOLFSSL
          select: -DMG_ENABLE_POLL=0
    name: macos SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }}
    env:
      SSL: ${{ matrix.ssl }}
      TFLAGS: ${{ matrix.select }} -DNO_SNTP_CHECK -Wno-sign-conversion # Workaround for MbedTLS 3.5.0
      HOMEBREW_NO_AUTO_UPDATE: 1
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: brew install mbedtls wolfssl # jq openssl already pre-installed
    - run: make -C test test ASAN_OPTIONS= MBEDTLS=$(echo $(brew --cellar)/mbedtls*/*) OPENSSL=$(echo $(brew --cellar)/openssl*/*) WOLFSSL=$(echo $(brew --cellar)/wolfssl*/*)
  windows:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      max-parallel: 1   # no parallel runs, to minimize MQTT errors
      matrix:
        target: [vc98, vc17, vc22, mingw, mingw++]
        ssl: ["", BUILTIN]
        select: [-DMG_ENABLE_POLL=0, -DMG_ENABLE_POLL=1]
        exclude:
        - target: vc98
          select: -DMG_ENABLE_POLL=1
    name: windows ${{ matrix.target }} SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }}
    env:
      SSL: SSL=${{ matrix.ssl }}
      TFLAGS: ${{ matrix.select }}
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: make -C test ${{ matrix.target }} 
  arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN]
    name: Arm SSL=${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: make -C test arm SSL=${{ matrix.ssl }}
  riscv:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", BUILTIN]
    name: RISC-V SSL=${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: make -C test riscv SSL=${{ matrix.ssl }}

  examples:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: examples ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: sudo apt -y install libpcap-dev
    - run: make -C test examples CFLAGS_EXTRA="${{ matrix.ssl }}"
    - run: make -C test clean_examples
  examples_win:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: examples_win ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
#    - uses: egor-tensin/setup-mingw@v2
#      with:
#        platform: x64
    - name: test they build
      run: make -C test examples_win CFLAGS_EXTRA="${{ matrix.ssl }}"
      shell: cmd
    - name: test they clean
      run: make -C test clean_examples_win
      shell: cmd
  examples_mac:
    runs-on: macos-latest
    env: { HOMEBREW_NO_AUTO_UPDATE: 1 }
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: examples_mac ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: make -C test examples_mac CFLAGS_EXTRA="${{ matrix.ssl }}"
    - run: make -C test clean_examples_mac

  refprojs:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: reference-projects ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: make -C test refprojs CFLAGS_EXTRA="${{ matrix.ssl }}"
    - run: make -C test clean_refprojs
  refprojs_win:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: reference-projects_win ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
#    - uses: egor-tensin/setup-mingw@v2
#      with:
#        platform: x64
    - name: test they build
      run: make -C test refprojs_win CFLAGS_EXTRA="${{ matrix.ssl }}"
      shell: cmd
    - name: test they clean
      run: make -C test clean_refprojs_win
      shell: cmd
  refprojs_mac:
    runs-on: macos-latest
    env: { HOMEBREW_NO_AUTO_UPDATE: 1 }
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: reference-projects_mac ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: make -C test refprojs CFLAGS_EXTRA="${{ matrix.ssl }}"
    - run: make -C test clean_refprojs

  tutorials:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: tutorials ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: sudo apt -y install libpcap-dev
    - run: make -C test tutorials CFLAGS_EXTRA="${{ matrix.ssl }}"
    - run: make -C test clean_tutorials
  tutorials_win:
    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: tutorials_win ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
#    - uses: egor-tensin/setup-mingw@v2
#      with:
#        platform: x64
    - name: test they build
      run: make -C test tutorials_win CFLAGS_EXTRA="${{ matrix.ssl }}"
      shell: cmd
    - name: test they clean
      run: make -C test clean_tutorials_win
      shell: cmd
  tutorials_mac:
    runs-on: macos-latest
    env: { HOMEBREW_NO_AUTO_UPDATE: 1 }
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
    name: tutorials_mac ${{ matrix.ssl }}
    steps:
    - uses: actions/checkout@v4
    - run: make -C test tutorials_mac CFLAGS_EXTRA="${{ matrix.ssl }}"
    - run: make -C test clean_tutorials_mac


  arduino:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - run: echo # nothing specific to install or do
    - run: make -C examples/arduino arduino-xiao
#   - run: make -C examples/arduino arduino-nano
    - run: make -C examples/arduino clean


  generic_examples:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: esp32/uart-bridge
          - path: esp32/micropython
          - path: esp8266/http-client-server
    name: ${{ matrix.example.path }}
    env:
      GO: 0
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: if ./test/match_changed_files.sh '^src|^examples/${{ matrix.example.path }}'; then echo GO=1 >> $GITHUB_ENV ; fi
      - run: echo # nothing specific to install or do
      - run: make -C examples/${{ matrix.example.path }} build
  
  generic_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: microchip/same54-xpro/mqtt-client
          - path: infineon/infineon-xmc4700_4800-lwip-rtx-rtos
          - path: nxp/nxp-mimxrt1020-azurertos
          - path: nxp/nxp-frdmk66f-freertos
          - path: nxp/nxp-lpcxpresso54s018m-freertos
          - path: nxp/nxp-mimxrt1020-freertos
          - path: nxp/nxp-evkbimxrt1050-lwip-freertos
          - path: nxp/nxp-evkmimxrt1020-lwip-freertos
          - path: nxp/nxp-evkmimxrt1024-lwip-freertos
          - path: nxp/nxp-evkmimxrt1060-lwip-freertos
          - path: nxp/nxp-evkmimxrt1064-lwip-freertos
          - path: nxp/nxp-evkmimxrt1160-cm7-lwip-freertos
          - path: nxp/nxp-evkmimxrt1170-cm7-lwip-freertos
          - path: nxp/nxp-frdmk64f-lwip-freertos
          - path: nxp/nxp-frdmk66f-lwip-freertos
          - path: nxp/nxp-lpcxpresso54018-lwip-freertos
          - path: nxp/nxp-lpcxpresso54608-lwip-freertos
          - path: nxp/nxp-lpcxpresso54618-lwip-freertos
          - path: nxp/nxp-lpcxpresso54628-lwip-freertos
          - path: nxp/nxp-twrk65f180m-lwip-freertos
          - path: nxp/nxp-twrkv58f220m-lwip-freertos
          - path: rp2040/pico-rmii
          - path: stm32/nucleo-f429zi-make-baremetal-builtin-rndis
          - path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis
          - path: stm32/nucleo-g031-make-baremetal-builtin
          - path: ti/ti-ek-tm4c1294xl-http-server
          - path: ti/ek-tm4c1294xl-make-baremetal-builtin-rndis
    name: ${{ matrix.example.path }}
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
      - run: make -C examples/${{ matrix.example.path }} build

  device_dashboard_examples:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: esp32/device-dashboard
    name: ${{ matrix.example.path }}
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: echo # nothing specific to install or do
      - run: make -C examples/${{ matrix.example.path }} build

  device_dashboard_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ssl: ["", -DMG_TLS=MG_TLS_BUILTIN]
        example:
          - path: infineon/infineon-xmc7200
          - path: microchip/same54-xpro/device-dashboard
          - path: nxp/rt1020-evk-make-baremetal-builtin
          - path: nxp/rt1020-evk-make-freertos-builtin
          - path: nxp/rt1060-evk-make-baremetal-builtin
          - path: nxp/rt1060-evk-make-freertos-builtin
          - path: nxp/rt1170-evk-make-baremetal-builtin
          - path: nxp/rt1170-evk-make-freertos-builtin
          - path: renesas/ek-ra6m4-make-baremetal-builtin
          - path: rp2040/pico-rndis-dashboard
          - path: rp2040/pico-w
          - path: rp2040/pico-w5500
          - path: stm32/nucleo-f429zi-make-baremetal-builtin
          - path: stm32/nucleo-f429zi-make-freertos-builtin
          - path: stm32/nucleo-f746zg-make-baremetal-builtin
          - path: stm32/nucleo-f746zg-make-freertos-builtin
          - path: stm32/nucleo-f746zg-make-freertos-tcp
          - path: stm32/nucleo-f746zg-make-baremetal-builtin-cmsis_driver
          - path: stm32/nucleo-h563zi-make-baremetal-builtin
          - path: stm32/nucleo-h563zi-make-freertos-builtin
          - path: stm32/nucleo-h723zg-make-freertos-builtin
          - path: stm32/nucleo-h743zi-make-baremetal-builtin
          - path: stm32/nucleo-h743zi-make-freertos-builtin
          - path: stm32/stm32h573i-dk-make-baremetal-builtin
          - path: stm32/stm32h573i-dk-make-freertos-builtin
          - path: ti/ek-tm4c1294xl-make-baremetal-builtin
          - path: ti/ek-tm4c1294xl-make-freertos-builtin
    name: ${{ matrix.example.path }} ${{ matrix.ssl }}
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
      - run: make -C examples/${{ matrix.example.path }} build CFLAGS_EXTRA="${{ matrix.ssl }}"

#  mqtt_dashboard_examples:
#    runs-on: ubuntu-latest
#    strategy:
#      fail-fast: false
#      matrix:
#        example:
#          - path: 
#    name: ${{ matrix.example.path }}
#    steps:
#      - uses: actions/checkout@v4
#        with: { fetch-depth: 2 }
#      - run: echo # nothing specific to install or do
#      - run: make -C examples/${{ matrix.example.path }} build
      
  mqtt_dashboard_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: rp2040/pico-rndis-device
    name: ${{ matrix.example.path }}
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
      - run: make -C examples/${{ matrix.example.path }} build
      
#  dual_examples:
#    runs-on: ubuntu-latest
#    strategy:
#      fail-fast: false
#      matrix:
#        example:
#          - path: 
#    name: ${{ matrix.example.path }}
#    steps:
#      - uses: actions/checkout@v4
#        with: { fetch-depth: 2 }
#      - run: echo # nothing specific to install or do
#      - run: make -C examples/${{ matrix.example.path }} device_dashboard
#      - run: make -C examples/${{ matrix.example.path }} mqtt_dashboard

  dual_examples_arm:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        example:
          - path: stm32/nucleo-h723zg-make-baremetal-builtin
    name: ${{ matrix.example.path }}
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
      - run: make -C examples/${{ matrix.example.path }} device_dashboard
      - run: make -C examples/${{ matrix.example.path }} mqtt_dashboard

  cube_examples:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: echo # nothing specific to install or do
      - run: cd test/cube && make

  zephyr_examples:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 2 }
      - run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
      - run: make -C examples/zephyr init
      - name: minify manifest
        uses: mikefarah/yq@master
        with:
          cmd: yq -i eval '(.manifest.defaults, .manifest.remotes, .manifest.projects[] | select(.name == "cmsis" or .name == "hal_stm32" or .name == "mbedtls" or .name == "mcuboot" or .name == "picolibc" | del(.null) ), .manifest.self) as $i ireduce({};setpath($i | path; $i)) | del(.manifest.projects.[].null) | del(..|select(length==0))' examples/zephyr/zephyrproject/zephyr/west.yml
      - run: make -C examples/zephyr update
      - run: make -C examples/zephyr/device-dashboard build
      - run: make -C examples/zephyr/http-client build
      - run: make -C examples/zephyr/http-server build
      - run: make -C examples/zephyr/mqtt-aws-client build
      - run: make -C examples/zephyr/websocket-server build

  test_f7:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/stm32/nucleo-f746zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/stm32/nucleo-f746zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/stm32/nucleo-f746zg-make-freertos-tcp test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - name: Cube
      run: echo # nothing specific to install or do
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5    
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5

  test_f4:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/stm32/nucleo-f429zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/stm32/nucleo-f429zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - name: Cube
      run: echo # nothing specific to install or do
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2

  test_h743:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/stm32/nucleo-h743zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/stm32/nucleo-h743zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - name: Cube
      run: echo # nothing specific to install or do
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6
    - run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6

  test_h723:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/stm32/nucleo-h723zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/stm32/nucleo-h723zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    
  test_h5:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/stm32/nucleo-h563zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/stm32/nucleo-h563zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_rt1020:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/nxp/rt1020-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/nxp/rt1020-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_rt1060:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/nxp/rt1060-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/nxp/rt1060-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_rt1170:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/nxp/rt1170-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run: make -C examples/nxp/rt1170-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_ra6m4:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 3 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run: make -C examples/renesas/ek-ra6m4-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
#    - run: make -C examples/renesas/ek-ra6m4-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_tm4c:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run:  make -C examples/ti/ek-tm4c1294xl-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run:  make -C examples/ti/ek-tm4c1294xl-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_same54:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - name: baremetal
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run:  make -C examples/microchip/same54-xpro/device-dashboard test VCON_API_KEY=${{secrets.VCON_API_KEY}}
    - run:  make -C examples/microchip/same54-xpro/mqtt-client test VCON_API_KEY=${{secrets.VCON_API_KEY}}

  test_pico_w5500:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with: { fetch-depth: 2 }
    - name: SDK
      run: sudo apt -y update && sudo apt -y install gcc-arm-none-eabi
    - run:  make -C examples/rp2040/pico-w5500 test VCON_API_KEY=${{secrets.VCON_API_KEY}}

